---
name: "["
section: "1"
platform: "linux"
package: "coreutils"
version: "9.7-3"
release: "Debian 13 (Trixie)"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/test"
---

# \[(1)

check file types and compare values

Part of [test(1)](/test/1.md).

## NAME

test - check file types and compare values

## SYNOPSIS

**test** *EXPRESSION*\
 **test**\
 **\[** *EXPRESSION* **\]**\
 **\[ \]**\
 **\[** *OPTION*

## DESCRIPTION

Exit with the status determined by EXPRESSION.

- **--help**

  display this help and exit

- **--version**

  output version information and exit

An omitted EXPRESSION defaults to false.  Otherwise, EXPRESSION is true or false and sets exit status.  It is one of:

- ( EXPRESSION )

  EXPRESSION is true

- ! EXPRESSION

  EXPRESSION is false

- EXPRESSION1 **-a** EXPRESSION2

  both EXPRESSION1 and EXPRESSION2 are true

- EXPRESSION1 **-o** EXPRESSION2

  either EXPRESSION1 or EXPRESSION2 is true

- **-n** STRING

  the length of STRING is nonzero

- STRING

  equivalent to **-n** STRING

- **-z** STRING

  the length of STRING is zero

- STRING1 = STRING2

  the strings are equal

- STRING1 != STRING2

  the strings are not equal

- STRING1 \> STRING2

  STRING1 is greater than STRING2 in the current locale

- STRING1 \< STRING2

  STRING1 is less than STRING2 in the current locale

- INTEGER1 **-eq** INTEGER2

  INTEGER1 is equal to INTEGER2

- INTEGER1 **-ge** INTEGER2

  INTEGER1 is greater than or equal to INTEGER2

- INTEGER1 **-gt** INTEGER2

  INTEGER1 is greater than INTEGER2

- INTEGER1 **-le** INTEGER2

  INTEGER1 is less than or equal to INTEGER2

- INTEGER1 **-lt** INTEGER2

  INTEGER1 is less than INTEGER2

- INTEGER1 **-ne** INTEGER2

  INTEGER1 is not equal to INTEGER2

- FILE1 **-ef** FILE2

  FILE1 and FILE2 have the same device and inode numbers

- FILE1 **-nt** FILE2

  FILE1 is newer (modification date) than FILE2

- FILE1 **-ot** FILE2

  FILE1 is older than FILE2

- **-b** FILE

  FILE exists and is block special

- **-c** FILE

  FILE exists and is character special

- **-d** FILE

  FILE exists and is a directory

- **-e** FILE

  FILE exists

- **-f** FILE

  FILE exists and is a regular file

- **-g** FILE

  FILE exists and is set-group-ID

- **-G** FILE

  FILE exists and is owned by the effective group ID

- **-h** FILE

  FILE exists and is a symbolic link (same as **-L**)

- **-k** FILE

  FILE exists and has its sticky bit set

- **-L** FILE

  FILE exists and is a symbolic link (same as **-h**)

- **-N** FILE

  FILE exists and has been modified since it was last read

- **-O** FILE

  FILE exists and is owned by the effective user ID

- **-p** FILE

  FILE exists and is a named pipe

- **-r** FILE

  FILE exists and the user has read access

- **-s** FILE

  FILE exists and has a size greater than zero

- **-S** FILE

  FILE exists and is a socket

- **-t** FD

  file descriptor FD is opened on a terminal

- **-u** FILE

  FILE exists and its set-user-ID bit is set

- **-w** FILE

  FILE exists and the user has write access

- **-x** FILE

  FILE exists and the user has execute (or search) access

Except for **-h** and **-L**, all FILE-related tests dereference symbolic links. Beware that parentheses need to be escaped (e.g., by backslashes) for shells. INTEGER may also be **-l** STRING, which evaluates to the length of STRING.

Binary **-a** and **-o** are ambiguous.  Use 'test EXPR1 && test EXPR2' or 'test EXPR1 \|\| test EXPR2' instead.

'\[' honors **--help** and **--version**, but 'test' treats them as STRINGs.

Your shell may have its own version of test and/or \[, which usually supersedes the version described here.  Please refer to your shell's documentation for details about the options it supports.

## AUTHOR

Written by Kevin Braunsdorf and Matthew Bradburn.

## REPORTING BUGS

GNU coreutils online help: \<https://www.gnu.org/software/coreutils/\>\
 Report any translation bugs to \<https://translationproject.org/team/\>

## SEE ALSO

[**access**(2)](/access/2.md)

Full documentation \<https://www.gnu.org/software/coreutils/test\>\
 or available locally via: info '(coreutils) test invocation'

Packaged by Debian (9.7-3)\
 Copyright © 2025 Free Software Foundation, Inc.\
 License GPLv3+: GNU GPL version 3 or later \<https://gnu.org/licenses/gpl.html\>.\
 This is free software: you are free to change and redistribute it.\
 There is NO WARRANTY, to the extent permitted by law.
